home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / casm1.lqr / DSPIO.ASM < prev    next >
Assembly Source File  |  1985-06-03  |  2KB  |  64 lines

  1.  
  2. ;                         Listing 1
  3. ;                  C to Assembly Interface
  4. ;     Computer Language, Vol. 2, No. 2 (February, 1985), pp. 49-59
  5. ;       Modified to remove duplicate leading part, L.P., 5/29/85
  6. ;
  7. ; SUBROUTINE TO PERFORM DIRECT SCREEN I/O
  8. ;
  9. ; int ax, bx, cx, dx ;
  10. ; char retval [8] ; 
  11. ;
  12. ;   dspio( ax, bx, cx, dx, retval ) ;
  13. ;   dspio( ax ) ;
  14. ;   dspio( ax, bx ) ;  
  15. ;   dspio( ax, bx, cx ) ;
  16. ;   dspio( ax, bx, cx, dx ) ;
  17. ;
  18. ;    ax - dx VALUES TO BE PLACED IN THE REGISTERS OF THE SAME NAME
  19. ;            AS NEEDED BY PARTICULAR VIDEO I/O FUNCTION
  20. ;
  21. ;    retval, IF SUPPLIED IS A POINTER TO A 4 WORD AREA INTO WHICH THE
  22. ;            4 REGISTERS AX - DX ARE COPIED AFTER RETURN FROM INT 10H.
  23. ;
  24. DGROUP  GROUP  DATA
  25. DATA    SEGMENT WORD PUBLIC 'DATA'
  26.         ASSUME  DS:DGROUP
  27. DATA    ENDS
  28. ;
  29. PGROUP  GROUP  PROG
  30. PROG    SEGMENT  BYTE  PUBLIC 'PROG'
  31.         ASSUME   CS:PGROUP
  32.         PUBLIC   DSPIO
  33. ;
  34. RLAYOUT  STRUC        ; Return address space layout; pointed at by retval
  35. RAX     DW    ?       
  36. RBX     DW    ?
  37. RCX     DW    ?
  38. RDX     DW    ?
  39. RLAYOUT ENDS
  40. ;
  41. DSPIO   PROC   NEAR
  42.         POP    SI         ; SAVE RETURN ADDRESS
  43.         POP    AX         ; GET PARAMETERS
  44.         POP    BX
  45.         POP    CX
  46.         POP    DX
  47.         POP    DI         ; OPTIONAL POINTER TO 4 WORD AREA
  48.         INT    10H
  49.         CMP    SP,BP      ; BP IS ALWAYS >= OFFSET OF LAST ARGUMENT
  50.         JA     DONE       ; IF NO RETURN POINTER PASSED, DON'T SAVE VALUES
  51.         MOV    [DI].RAX,AX
  52.         MOV    [DI].RBX,BX
  53.         MOV    [DI].RCX,CX
  54.         MOV    [DI].RDX,DX
  55.         JMP    SI
  56. DONE:   PUSH   DI       
  57.         PUSH   DX       ; RESTORE STACK BECAUSE OF THE POSSIBILITY THAT THEY
  58.         PUSH   CX       ; WERE NOT PASSED AS ARGUMENTS
  59.         PUSH   BX
  60.         JMP SI
  61. DSPIO   ENDP
  62. PROG    ENDS
  63.         END
  64.